/* 
	Essno is an elliptic curve cryptography base software
	Popov AS, 2009
*/ 

#include <stdio.h>		// Стандартный Ввод/Вывод
#include <stdlib.h>	
#include <string.h>		// Быстрая работа с памятью memset
#include "type_ess.h"
#include "essno.h"
#include "hash_ess.h"



int hash_ess(FILE *infile){ 
	/*Вход: ссылка на файл, открытый бинарно
	 *Выход: a_H - хэш файла*/
	
	/*Вспомогательные переменные*/
	// BN_256 = 2^256
	char BN_256_in_dec[]="115792089237316195423570985008687907853269984665640564039457584007913129639936";
	NEW_BN( BN_256_, BN_256, 0, sizeof(BN_256_in_dec)-1 );
	loadBN_decimal( BN_256, BN_256_in_dec, sizeof(BN_256_in_dec)-1 );	
			
	/*Шаг 1 - инициализация*/
	/* Фрагмент сообщения (256 бит) */
	NEW_BN( m_, m, 256, 0);		// m0 = 000...0
	/* хэш (256 бит) */
	NEW_BN( h_, h, 256, 0);		// h0 = 000...0
	/*Контрольная сумма*/
	NEW_BN( csum_, csum, 256, 0);// csum0 = 000...0
	/*Длина сообщения*/
	unsigned long long L=0;		// L < 2147483648 ГБ
	
	
	/*Шаг 2 - функция сжатия внутренних итераций (для i=1...n-1)*/
	
	
/*for(i=0;i<=31;i++){

  union{unsigned char pol;
		struct{unsigned b0:1;
				unsigned b1:1;
				unsigned b2:1;
				unsigned b3:1;
				unsigned b4:1;
				unsigned b5:1;
				unsigned b6:1;
				unsigned b7:1;
		}bit;
  }cod;


  cod.pol=st[i];

  
  pole[i*8+0]=cod.bit.b0;
  pole[i*8+1]=cod.bit.b1;
  pole[i*8+2]=cod.bit.b2;
  pole[i*8+3]=cod.bit.b3;
  pole[i*8+4]=cod.bit.b4;
  pole[i*8+5]=cod.bit.b5;
  pole[i*8+6]=cod.bit.b6;
  pole[i*8+7]=cod.bit.b7;
  
}//бинарное разложение	*/
	
	
	
	return 0;	
}
	
	
	
	